package com.java2nb.novel.pay.entity;

import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 退款订单实体（数据库表：t_refund_order）
 */
@Data

public class RefundOrder implements Serializable  {

    private String refundOrderId;    // 支付中心退款订单号（主键）
    private String mchNo;            // 商户号
    private String appId;            // 应用ID
    private String payOrderId;       // 原支付中心订单号
    private String mchOrderNo;       // 原商户订单号
    private String mchRefundNo;      // 商户退款单号（唯一）
    private Integer payAmount;       // 原支付金额（单位：分）
    private Integer refundAmount;    // 退款金额（单位：分）
    private String currency;         // 货币代码（CNY）
    private String refundReason;     // 退款原因
    private String clientIp;         // 客户端IP
    private String notifyUrl;        // 退款结果异步通知地址
    private String channelExtra;     // 渠道参数（JSON）
    private String extParam;         // 扩展参数（回调原样返回）
    private Integer refundStatus;    // 退款状态（0=退款中，1=退款成功，2=退款失败）
    private String channelTrxId;     // 渠道退款流水号
    private LocalDateTime successTime; // 退款成功时间
    private LocalDateTime createTime; // 创建时间
    private LocalDateTime updateTime; // 更新时间

    // 唯一索引：商户号+商户退款单号（防重复退款）
    private String ukMchNoMchRefundNo; // 逻辑字段，实际数据库为联合索引(uk_mch_no_mch_refund_no)
}